#ifndef __ZHONG_SPEECH__
#define __ZHONG_SPEECH__
#include "../third/include/aip-cpp-sdk/speech.h"
#include "logger.hpp"
#include <iostream>

// namespace zhong
// {
    
//     namespace asrer
//     {

//     };
// }
namespace bite_im
{
    // 对语音识别类与接口进行二次封装
    class AsrClient
    {
    public:
        using ptr = std::shared_ptr<AsrClient>;
        AsrClient(const std::string &app_id, const std::string &api_key_id, const std::string &api_key_secret)
            : _client(app_id, api_key_id, api_key_secret) {}
        // 语音识别请求接口---传入pcm文件的文件内容
        std::string recognize(const std::string &file_content, std::string &err_msg)
        {

            // // 另一种解析，先通过在外部将get_file_content实现再传给_client.recognize
            // std::string file_content;
            // aip::get_file_content(file_name.c_str(), &file_content);
            // 如果需要覆盖或者加入参数
            std::map<std::string, std::string> options;
            options["dev_pid"] = "1537"; // 对应普通话
            Json::Value result = _client.recognize(file_content, "pcm", 16000, options);
            if (result["err_no"].asInt() != 0)
            {
                LOG_ERROR("语音识别失败，原因[{}]", result["err_msg"].asString());
                err_msg = result["err_msg"].asString();
                return std::string();
            }
            return result["result"][0].asString();
        }

    private:
        aip::Speech _client;
    };
}

#endif